package de.jmda.gen.java;

import java.util.List;

import javax.lang.model.element.Element;
import javax.validation.constraints.NotNull;

import de.jmda.gen.CompoundGenerator;

/**
 * {@link #getAnnotationStatementGenerators()} provides a list of {@link
 * AnnotationStatementGenerator}s. Each of those generators is expected to
 * produce an annotation statement. Together they are expected to produce the
 * complete set of annotation statements for an {@link Element}.
 *
 * @author roger.jmda@gmail.com
 */
public interface AnnotationStatementsGenerator
		extends CompoundGenerator
{
	/**
	 * @return annotation generators that produce complete set of annotations for
	 *         an {@link Element} (see {@link AnnotationStatementsGenerator})
	 */
	@NotNull List<AnnotationStatementGenerator> getAnnotationStatementGenerators();
}